home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
APC & TCP 5
/
APC & TCP 5.iso
/
tools
/
preview
/
other
/
wildfire
/
--please-test-it!
/
yp_beta2
/
yp_to24.s
< prev
next >
Wrap
Text File
|
1997-08-28
|
7KB
|
342 lines
;these routines are used to convert the YAFA frames to 24Bit RGB
;which is then used as input for WritePixelArray()
;-------------------------------------------------------------------------
; 15bit-Truecolor to 24bit-Truecolor by Smack/Infect! 23-Aug-97
;
; input 0rrrrrgg gggbbbbb
; output rrrrrrrr gggggggg bbbbbbbb
;
; parameters on stack:
; 00 APTR source
; 04 APTR dest
; 08 ULONG number_of_pixels
;
_color15to24
movem.l d0-a6,-(a7) ;15*4+4=64
move.l (64+00,a7),a5 ;source
move.l (64+04,a7),a6 ;dest
move.l (64+08,a7),d7 ;pixels
lsr.l #2,d7
moveq #19,d6
moveq #10,d5
moveq #18,d4
moveq #11,d3
.loop move.l (a5)+,d0 ;two pixels
move.l d0,d1
lsr.l d5,d0 ;#10
lsl.b #3,d0
move.b d0,d2
lsr #3,d0
lsr.b #3,d0
lsl.l d3,d0 ;#11
move.b d2,d0 ;RGBr
move.l d0,(a6)+
lsl #3,d1
move.l (a5)+,d0 ;two pixels
lsr.b #3,d1
move.l d0,d2
lsl.l d6,d1 ;#19 gb__
lsr.l d4,d0 ;#18
lsr.b #3,d0
lsl #3,d0
move d0,d1 ;gbRG
move.l d1,(a6)+
move.l d2,d0
lsr #2,d2
lsl.b #3,d0
lsr.b #3,d2
lsl.l d3,d2 ;#11
move.b d0,d2 ;Brgb
move.l d2,(a6)+
subq.l #1,d7
bgt.b .loop
movem.l (a7)+,d0-a6
rts
;-------------------------------------------------------------------------
LUT ds.l 256
;-------------------------------------------------------------------------
; 8bit-ChunkyPixels to 24bit-Truecolor by Smack/Infect! 08-Aug-97
;
; input all 8 bits are used here,
; this requires unused bits (if depth<8) to be cleared (ZER0)!
; output rrrrrrrr gggggggg bbbbbbbb
;
; parameters on stack:
; 00 APTR source
; 04 APTR dest
; 08 ULONG number_of_pixels
; 12 struct loadrgb* palette
;
_chunkyto24
movem.l d0-a6,-(a7) ;15*4+4=64
move.l (64+12,a7),a0
move (a0),d7
subq #1,d7 ;count
addq.l #4,a0
lea (LUT,pc),a4
move.l a4,a1
.makLUT move.l (a0)+,d1
move.l (a0)+,d2
move.l (a0)+,d3
moveq #0,d0
rol.l #8,d1
rol.l #8,d2
rol.l #8,d3
move.b d1,d0 ;R
lsl.l #8,d0
move.b d2,d0 ;G
lsl.l #8,d0
move.b d3,d0 ;B
move.l d0,(a1)+
dbf d7,.makLUT
move.l (64+00,a7),a5 ;source
move.l (64+04,a7),a6 ;dest
move.l (64+08,a7),d7 ;pixels
lsr.l #2,d7
moveq #24,d6
moveq #0,d0
moveq #0,d1
.loop move.b (a5)+,d0
move.b (a5)+,d1
move.l (a4,d0.l*4),d2
move.l (a4,d1.l*4),d3
lsl.l #8,d2 ;RGB_
swap d3 ;gb_r
move.b d3,d2 ;RGBr
move.l d2,(a6)+
move.b (a5)+,d0
move.b (a5)+,d1
move.l (a4,d0.l*4),d4
move.l d4,d2
lsr.l #8,d4
lsl.l d6,d2 ;B___
move d4,d3 ;gbRG
move.l d3,(a6)+
or.l (a4,d1.l*4),d2 ;Brgb
move.l d2,(a6)+
subq.l #1,d7
bgt.b .loop
movem.l (a7)+,d0-a6
rts
;-------------------------------------------------------------------------
; 8bit-ChunkyPixels HAM8 to 24bit-Truecolor by Smack/Infect! 08-Aug-97
;
; input 76543210 (bits 6 and 7 are the HAM8 control codes)
; output rrrrrrrr gggggggg bbbbbbbb
;
; parameters on stack:
; 00 APTR source
; 04 APTR dest
; 08 ULONG number_of_pixels
; 12 struct loadrgb* palette
;
_ham8to24
movem.l d0-a6,-(a7) ;15*4+4=64
move.l (64+12,a7),a0
move (a0),d7
subq #1,d7 ;count
addq.l #4,a0
lea (LUT,pc),a4
move.l a4,a1
.makLUT move.l (a0)+,d1
move.l (a0)+,d2
move.l (a0)+,d3
moveq #0,d0
rol.l #8,d1
rol.l #8,d2
rol.l #8,d3
move.b d1,d0 ;R
lsl.l #8,d0
move.b d2,d0 ;G
lsl.l #8,d0
move.b d3,d0 ;B
move.l d0,(a1)+
dbf d7,.makLUT
move.l (64+00,a7),a5 ;source
move.l (64+04,a7),a6 ;dest
move.l (64+08,a7),d7 ;pixels
move.b #%00000011,d6
moveq #0,d0
moveq #0,d2
moveq #0,d3
moveq #0,d4
.loop move.b (a5)+,d0
move.b d0,d1
lsr.b #6,d1 ;control code
bne.b .ham
;-------select new base register
move.l (a4,d0.l*4),d2
move.b d2,d4 ;Blue
lsr.l #8,d2
move.b d2,d3 ;Green
lsr.l #8,d2 ;Red
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.ham ;-------hold and modify
lsl.b #2,d0
subq.b #1,d1
bne.b .not_b
;-------modify Blue
and.b d6,d4
or.b d0,d4 ;keep old 2 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.not_b subq.b #1,d1
bne.b .not_r
;-------modify Red
and.b d6,d2
or.b d0,d2 ;keep old 2 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.not_r ;-------modify Green
and.b d6,d3
or.b d0,d3 ;keep old 2 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
.end movem.l (a7)+,d0-a6
rts
;-------------------------------------------------------------------------
; 8bit-ChunkyPixels HAM6 to 24bit-Truecolor by Smack/Infect! 08-Aug-97
;
; input __543210 (bits 4 and 5 are the HAM6 control codes,
; the unused bits 6 and 7 _MUST_ be cleared!)
; output rrrrrrrr gggggggg bbbbbbbb
;
; parameters on stack:
; 00 APTR source
; 04 APTR dest
; 08 ULONG number_of_pixels
; 12 struct loadrgb* palette
;
_ham6to24
movem.l d0-a6,-(a7) ;15*4+4=64
move.l (64+12,a7),a0
move (a0),d7
subq #1,d7 ;count
addq.l #4,a0
lea (LUT,pc),a4
move.l a4,a1
.makLUT move.l (a0)+,d1
move.l (a0)+,d2
move.l (a0)+,d3
moveq #0,d0
rol.l #8,d1
rol.l #8,d2
rol.l #8,d3
move.b d1,d0 ;R
lsl.l #8,d0
move.b d2,d0 ;G
lsl.l #8,d0
move.b d3,d0 ;B
move.l d0,(a1)+
dbf d7,.makLUT
move.l (64+00,a7),a5 ;source
move.l (64+04,a7),a6 ;dest
move.l (64+08,a7),d7 ;pixels
moveq #%00001111,d5
moveq #0,d0
moveq #0,d2
moveq #0,d3
moveq #0,d4
.loop move.b (a5)+,d0
move.b d0,d1
lsr.b #4,d1 ;control code
bne.b .ham
;-------select new base register
move.l (a4,d0.l*4),d2
move.b d2,d4 ;Blue
lsr.l #8,d2
move.b d2,d3 ;Green
lsr.l #8,d2 ;Red
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.ham ;-------hold and modify
lsl.b #4,d0 ;modify the 4 MSB
subq.b #1,d1
bne.b .not_b
;-------modify Blue
and.b d5,d4
or.b d0,d4 ;keep old 4 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.not_b subq.b #1,d1
bne.b .not_r
;-------modify Red
and.b d5,d2
or.b d0,d2 ;keep old 4 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
bra.b .end
.not_r ;-------modify Green
and.b d5,d3
or.b d0,d3 ;keep old 4 LSB
move.b d2,(a6)+
move.b d3,(a6)+
move.b d4,(a6)+
subq.l #1,d7
bgt.b .loop
.end movem.l (a7)+,d0-a6
rts
_WPA_STUB
movem.l d1-a6,-(a7) ;14*4+4=60
lea (60,a7),a2
move.l (a2)+,a0 ;srcrect
move.l (a2)+,d0 ;srcx
move.l (a2)+,d1 ;srcy
move.l (a2)+,d2 ;srcmod
move.l (a2)+,a1 ;rastport
move.l (a2)+,d3 ;destx
move.l (a2)+,d4 ;desty
move.l (a2)+,d5 ;sizex
move.l (a2)+,d6 ;sizey
move.l (a2)+,d7 ;srcformat
move.l (a2),a6 ;cybergfxbase
jsr (-$7e,a6) ;WritePixelArray
movem.l (a7)+,d1-a6
rts